//
//  HMTextView.swift
//  Weibo02
//
//  Created by teacher on 16/4/25.
//  Copyright © 2016年 teacher. All rights reserved.
//

import UIKit

/// 编辑微博界面的textview
class HMTextView: UITextView {
// 用户在输入文字的时候，是不会走 text 的 set方法的
//    override var text: String? {
//        didSet{
//            print(text)
//        }
//    }
    
    // 提供给外界设置占位文字的属性
    var placeholder: String? {
        didSet{
            placeholderLabel.text = placeholder
        }
    }
    
    // 外界设置了当前textView的字体的话，需要将占位文字的字体一并设置 不然会导致字体不一样 显示不好看
    override var font: UIFont? {
        didSet{
            //站为文本大小等于textView的文本大小
            placeholderLabel.font = self.font
        }
    }

    override init(frame: CGRect, textContainer: NSTextContainer?) {
        super.init(frame: frame, textContainer: textContainer)
        setupUI()
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
//    显示界面
    private func setupUI(){
//        添加占位文字  因为没有背景提醒文字 所以需要自己添加lable 修改成背景提醒文字
        
//        self.becomeFirstResponder()
        addSubview(placeholderLabel)
        
        // 添加约束
        placeholderLabel.snp_makeConstraints { (make) -> Void in
            make.leading.equalTo(5)
            make.top.equalTo(8)
            make.width.equalTo(self).offset(-10)
        }
        
        // 代理
        // self.delegate = self
//        通知  name 当文本变化时就发出通知
        NSNotificationCenter.defaultCenter().addObserver(self, selector: "textDidChage", name: UITextViewTextDidChangeNotification, object: nil)
    }
    //收到通知调用的方法
    @objc private func textDidChage(){
       // 当文本有值的时候才隐藏占位文本
        placeholderLabel.hidden = hasText()
    }
    //懒加载占位文本
    private lazy var placeholderLabel: UILabel = {
        //设置颜色大小
        let label = UILabel(textColor: UIColor.lightGrayColor(), fontSize: 12)
        //显示的文本
        label.text = "听说下雨榴莲与音乐更配哟～"
        //可以有很多行
        label.numberOfLines = 0
        return label
    }()
    
    //销毁通知
    deinit{
        NSNotificationCenter.defaultCenter().removeObserver(self)
    }
}
